package com.ssm.basis.web.controller;

import org.springframework.beans.PropertyEditorRegistrySupport;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.beans.propertyeditors.StringTrimmerEditor;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @see PropertyEditorRegistrySupport#createDefaultEditors
 * https://blog.csdn.net/f641385712/article/details/95473929
 */
public class BaseController {
    /**
     * 请求进来的所有字符串都 trim 一下
     * yyyy-MM-dd 这种格式的字符串能直接用 Date 类型接收（不用先 String 接收再自己转换）
     */
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        // binder.setDisallowedFields("name"); // 不绑定 name 属性
        binder.registerCustomEditor(String.class, new StringTrimmerEditor(false));

        // 此处使用 Spring 内置的 CustomDateEditor
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
    }
}
